home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / CKIT210.ARJ / CKIT.H < prev    next >
C/C++ Source or Header  |  1991-12-22  |  21KB  |  338 lines

  1. /****************************************************************************
  2.  *   FILE CKIT.H                                                            *
  3.  *   Created 11-FEB-1990            Rickie W. Belitz                        *
  4.  *                                  820 Brentwood Drive                     *
  5.  *                                  Maryville, Tennessee  37801             *
  6.  *                                  BBS (615) 982-6512                      *
  7.  *                                      (615) 982-6537                      *
  8.  *                                      (615) 982-8723                      *
  9.  *                                                                          *
  10.  *   Include file for    CKIT - DOOR Toolkit v1.7                           *
  11.  *                                                                          *
  12.  *                                                                          *
  13.  ****************************************************************************/
  14. /******************************************************************************
  15. *                        INCLUDE files needed                                 *
  16. *******************************************************************************/
  17.  
  18. #include    <stdio.h>
  19. #include    <stdlib.h>
  20. #include    <dos.h>
  21. #include    <time.h>
  22. #include    <string.h>
  23. #include    <stdarg.h>
  24. #include    <share.h>
  25. #include    <io.h>
  26. #define     MICROSOFT   1
  27. #define     TURBOC      2
  28. /****************************************************************************
  29.  *      IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF         *
  30.  ****************************************************************************/
  31. #if COMPILER == MICROSOFT
  32.     #include    <malloc.h>
  33. #else
  34.     #if COMPILER == TURBOC
  35.         #include    <alloc.h>
  36.     #endif
  37. #endif
  38.  
  39. /****************************************************************************
  40.  *     ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF    *
  41.  ****************************************************************************/
  42.  
  43. /* data type definitions */
  44. typedef     unsigned char BYTE;    /* Define BYTE to mean unsigned char */
  45.  
  46. /* logical  constants  */
  47. #define     ERR         -1
  48. #define     EVER        ;;         /* Used in "for (EVER)"              */
  49. #define     FALSE       0
  50. #define     TRUE        1
  51. #define     NOT_READY   -1
  52. #define     NO_KEY      0
  53. #define     EXITDOOR    0           /* User exited Door     */
  54. #define     NOCARRIER   1           /* Carrier lost         */
  55. #define     TIMEOUT     2           /* Keyboard timeout     */
  56. #define     SYSOP_O     3           /* Sysop request        */
  57. #define     SYSTEMTIME  4           /* System time elapse   */
  58. #define     LOGOFF      5           /* Normal logoff        */
  59. /******************************************************************************
  60. *                        ANSI color table indexes                             *
  61. *******************************************************************************/
  62. #define dkblue          1
  63. #define dkgreen         2
  64. #define dkcyan          3
  65. #define dkred           4
  66. #define dkviolet        5
  67. #define magenta         5
  68. #define brown           6
  69. #define grey            7
  70. #define dkgrey          8
  71. #define blue            9
  72. #define green           10
  73. #define cyan            11
  74. #define red             12
  75. #define violet          13
  76. #define yellow          14
  77. #define white           15
  78.  
  79. /******************************************************************************
  80.  *        External variable declarations                                      *
  81.  ******************************************************************************/
  82. extern  BYTE    ck_option;             /* Defines how the user was logged off */
  83. extern  int     ck_DUMP_USER;          /* Set to log off user from door       */
  84. extern  BYTE    ck_DOTS;               /* Echo dots with input()              */
  85.  
  86. extern  char    ck_system_time_HHMMSS[];       /* System time                   */
  87. extern  char    ck_todays_date_MMDDYY[];       /* System date                   */
  88. extern  void    ck_adjust_time_allowed(short);
  89. extern  BYTE    ck_cmdline[];                  /* Used to hold user input       */
  90. extern  char    ck_par[];                      /* Used to parse next cmd to     */
  91. extern  short   ck_linenum;                    /* Number of lines displayed     */
  92. extern  short   ck_graphics;                   /* ANSI in use                   */
  93. extern  short   ck_display;                    /* Local display on/off          */
  94. extern  short   ck_local;                      /* Local mode indicator          */
  95. extern  short   ck_printer;                    /* Printer online/offline        */
  96. extern  short   ck_pagebell;                   /* Page bell on/off              */
  97. extern  short   ck_callalarm;                  /* Caller alarm on/off           */
  98. extern  short   ck_port;                       /* Port number in use            */
  99. extern  short   ck_error_connection;           /* Error correction modem?       */
  100. extern  size_t  ck_scan_code;                  /* Keycodes for non-standard key */
  101.                                             /* F1 - F10, arrow keys etc      */
  102.                                             /* Holds received all keycodes   */
  103.  
  104. /* misc. see CKIT.DOC for more information on these */
  105. extern  short   ck_time_on, ck_prev_used, ck_time_limit, ck_dload_limit,
  106.                 ck_time_added, ck_time_credit, ck_min_left,ck_event_active,
  107.                 ck_event_slide,ck_user_record, ck_ansi_ng, ck_record_lock,
  108.                 ck_PCB12, ck_PCB, ck_WILDCAT, ck_GENERIC,ck_GAP, ck_RBBS,
  109.                 ck_expert, ck_parity, ck_current_conf, ck_chatmode,
  110.                 ck_uart_base, ck_irq, ck_non_ibm, ck_FOSSIL, ck_silent,
  111.                 ck_NO_FKEYS;
  112.  
  113. extern  short   ck_logoff_color;  /* Log off message color                 */
  114. extern  BYTE    *ck_conferences;  /* pointer to conferences registered in  */
  115. extern  BYTE    *ck_pcbsysbuf;    /* pointer to buffer holding pcboard.sys */
  116. extern  char    **ck_logoff_msgs; /* pointer to log off messages           */
  117. extern  char    **ck_gen_msgs;    /* pointer to general internal messages  */
  118.  
  119. /* C strings containing information read from BBS system files  */
  120. extern  BYTE    ck_firstname[16];
  121. extern  BYTE    ck_fullname[26];
  122. extern  BYTE    ck_bps_open[6];
  123. extern  BYTE    ck_baud_rate[6];
  124. extern  BYTE    ck_sysop_next[2];
  125. extern  BYTE    ck_netchat[2];
  126. extern  BYTE    ck_password[13];
  127. extern  BYTE    ck_language[6];
  128. extern  BYTE    ck_event_time[6];
  129. extern  BYTE    ck_aport[2];
  130. extern  BYTE    ck_BBSname[63];
  131.  
  132. extern  char    ck_node[3];
  133.  
  134. extern  char    ck_upload_total[5];        /* Total files downloaded   */
  135. extern  char    ck_dload_total[5];         /* Total files uploaded     */
  136. extern  char    ck_daily_bytes[4];         /* Total Daily K bytes      */
  137. extern  char    ck_download_Kbytes[10];    /* Total K bytes downloaded */
  138. extern  char    ck_upload_Kbytes[10];      /* Total K bytes uploaded   */
  139. extern  BYTE    ck_time_logged[6];
  140. extern  char    ck_caller_bday[8];         /* Caller's birthday        */
  141. extern  char    ck_main_dir[80];           /* Main bbs system path     */
  142. extern  char    ck_gen_dir[80];            /* BBS system general path  */
  143. extern  char    ck_sysop_name[15];         /* Sysop first name         */
  144. extern  char    ck_sysop_alias[15];        /* Sysop's alias name       */
  145. extern  char    ck_last_file_scan[8];      /* Last new file scan       */
  146. extern  char    ck_max_files[4];           /* Max files allowed to dl  */
  147. extern  char    ck_daily_files[4];         /* Number of files today    */
  148. extern  char    ck_total_doors[4];         /* Total doors opened       */
  149. extern  char    ck_msgs_left[4];           /* Number of messages left  */
  150. extern  BYTE    ck_page_length;            /* User page length         */
  151. extern  char    ck_protocol[15];           /* User's default protocol  */
  152. extern  char    ck_security_level[5];      /* User's security level    */
  153.  
  154.  
  155. /* Below is info specific to WILDCAT! users */
  156. extern  char    ck_monitor_type[5]; /* MONO/COLOR (Graphics On/Off)        */
  157. extern  char    ck_max_sec[5];      /* Maximum security allowed             */
  158. extern  char    ck_high_msg[10];    /* High message number read             */
  159. extern  BYTE    ck_name_in_use;     /* True/False Name in use on other node */
  160. extern  char    ck_door_opened[5];  /* Door user opened                     */
  161.  
  162.  
  163. /* Below is info you will need to define in your door program */
  164. extern  short   ck_FORCEOFFHOOK;       /* Set to TRUE or FALSE                */
  165. extern  short   ck_LOGOFFMSG;          /* Set to TRUE or FALSE                */
  166. extern  short   ck_USERSFILE;          /* Set true if you want user file info */
  167.                                        /* PCBoard systems only                */
  168. extern  char    ck_progname[21];       /* Put you program name here.  define  */
  169.                                        /* the string in YOUR program          */
  170.                                        /* MAX. 20 chars. See CKITDEMO.H       */
  171.                                        /* for example                         */
  172. extern  char    ck_error_msg11[40];    /* Display file error msg, if you want */
  173.                                        /* to change it...MAX 40 chars!        */
  174.  
  175.  
  176. /******************************************************************************
  177.  *                    Structure declarations (PCBoard 14.5 only)              *
  178.  ******************************************************************************/
  179. typedef struct pcbuserstype {
  180.  
  181.     char    name[26];                   /* First and Last name                */
  182.     char    city[25];                   /* City and State                     */
  183.     char    pwrd[13];                   /* Password                           */
  184.     char    bphone[14];                 /* Business/Data phone number         */
  185.     char    phone[14];                  /* Home phone number                  */
  186.     char    last_date[7];               /* Last date on in (YYMMDD) format    */
  187.     char    last_time[6];               /* Last logon time in HH:MM) format   */
  188.     char    expert[2];                  /* Expert Mode (Y or N)               */
  189.     char    protocol[2];                /* Protocol type                      */
  190.     BYTE    packed_byte;                /* Bit packed flags                   */
  191.     char    filedate[7];                /* Last DIR look date (YYMMDD) format */
  192.     BYTE    security;                   /* Security level of user             */
  193.     short   total_calls;                /* Number of times on                 */
  194.     BYTE    page_length;                /* Page length                        */
  195.     short   uploads;                    /* Number of Uploads                  */
  196.     short   downloads;                  /* Number of Downloads                */
  197.     double  dload_bytes;                /* Daily dload bytes so far           */
  198.     char    comment1[31];               /* User maintained comment            */
  199.     char    comment2[31];               /* Sysop maintained comment           */
  200.     short   time_used;                  /* Elapsed time on system             */
  201.     char    expire_date[7];             /* Subscription Reg. Date (YYMMDD)    */
  202.     BYTE    expire_level;               /* Expired security level             */
  203.     BYTE    current_conf;               /* Area number last in                */
  204.     BYTE    conferences[6];             /* Conferences area allowed in        */
  205.     BYTE    expire_conf[6];             /* Expired conference areas           */
  206.     BYTE    scan_conf[6];               /* Conferences desired for mail scan  */
  207.     double  dload_total;                /* Total bytes downloaded - all calls */
  208.     double  upload_total;               /* Total bytes uploaded - all calls   */
  209.     char    delete_user[2];             /* Delete user flag (Y or N)          */
  210.     unsigned long last_msg_read;        /* Last read msg Main area (default)  */
  211.     long    last_read[39];              /* Last Read Message Area pointers    */
  212.     BYTE    space2[15];                 /* Reserved                           */
  213.  
  214. };
  215. extern  struct pcbuserstype  ck_user;
  216.  
  217. /****************************************************************************
  218.  *      IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF         *
  219.  ****************************************************************************/
  220. /******************************************************************************
  221.  *                Function prototypes                                         *
  222.  ******************************************************************************/
  223. void    s_printf(char *,...);       /* High level variable sio puts           */
  224.  
  225. /*  COMMENT
  226.    Copy this function to your door source code to create the s_printf() func.
  227.    See ckitdemo.c. Default buffer is 82 chars, modify as  needed.
  228.  
  229. void s_printf(char *s_format,...) {
  230.     va_list arg_pointer;
  231.     char buffer[82];
  232.     va_start(arg_pointer, s_format);
  233.     vsprintf(buffer, s_format, arg_pointer);
  234.     s_puts(buffer);
  235.     va_end(arg_pointer);
  236. }
  237.  
  238. */
  239.  
  240. /******************************************************************************
  241.  *                External function prototypes                                *
  242.  ******************************************************************************/
  243.  
  244. extern  void    ck_clear_screen(void);
  245. extern  void    ck_set_r_c(short, short);
  246. extern  short   ck_open_door(char *, ...);
  247. extern  void    ck_close_door(void);
  248. extern  void    ck_s_putv();                   /* High level send variable string I/O function     */
  249. extern  void    ck_s_puts(char *);             /* High level send string I/O function              */
  250. extern  void    ck_s_putsn(char *);            /* High level send string LOCAL only                */
  251. extern  void    ck_s_putstd(char *);           /* High level send string using STD output          */
  252. extern  void    ck_s_putc(BYTE);               /* High level send char.  I/O function              */
  253. extern  void    ck_newline(void);              /* send a Carriage return, line feed                */
  254. extern  void    ck_clear_row(short);           /* Clear a given row of screen                      */
  255. extern  void    ck_color(short);               /* Select ANSI color to use                         */
  256. extern  void    ck_pos_cursor(short, short);   /* Position cursor using ANSI                       */
  257. extern  void    ck_clr_screen(void);           /* Clear local/remote screens                       */
  258. extern  void    ck_back_space(short);          /* Destructive backspace  local/remote              */
  259. extern  void    ck_clear_eol(void);            /* Clear to end of line local/remote                */
  260. extern  short   ck_display_file(char *);       /* Display file local/remote                        */
  261. extern  void    ck_prompt_def(char *, char *); /* Display prompt, with default string              */
  262. extern  void    ck_get_def(char *, char *);    /* Same as prompt_def, but gets input               */
  263. extern  void    ck_get_defn(char *, char *);   /* Same as get_def, appends "(Enter)=none?"                 */
  264. extern  void    ck_get_defen(char *);          /* Same as get_def, but default is always "(Enter=none? "   */
  265. extern  void    ck_get_defyn(char *, short);   /* Get input with yes/no default based on short value       */
  266. extern  short   ck_nomore(void);               /* prompt more?, returns TRUE if no or              */
  267. extern  size_t  ck_inkey(void);                /* Read char. from local/remote                     */
  268. extern  size_t  ck_getkey(void);               /* Read char. from local keyboard                   */
  269. extern  short   ck_wait_keypress(void);        /* Waits for any key press, high level              */
  270. extern  void    ck_force_enter(void);          /* Force user to press enter key to continue        */
  271. extern  void    ck_get_cmdline(void);
  272. extern  void    ck_get_cmdline_raw(short);     /* Get cmdline, erase prompt based on short         */
  273. extern  void    ck_input(BYTE *, short);       /* Read input into cmdline, local/remote            */
  274. extern  short   ck_keystat();                  /* Check if key waiting                             */
  275. extern  BYTE    ck_receive(void);              /* Get character receieved from the receive buffer  */
  276. extern  BYTE    ck_sio_getbyte (void);         /* Returns byte from port, if available             */
  277. extern  char    ck_get_nextpar(void);
  278. extern  void    ck_check_time_left(void);  /* Check if user time is up, sets DUMPUSER              */
  279. extern  short   ck_mins_left_system(void); /* Returns number of minutes left on system */
  280. extern  short   ck_system_time_used(void); /* Returns mins since door was opened */
  281. extern  void    ck_adjust_time_allowed(short); /* Add/Subtract user time left                      */
  282. extern  short   ck_event_minutes(void);    /* Return minutes from midnight of event                */
  283. extern  void    ck_lower_dtr(void);        /* Lower DTR line on serial port                        */
  284. extern  void    ck_raise_dtr(void);        /* Raise DTR line on serial port                        */
  285. extern  void    ck_force_offhook(void);    /* Force modem to hangup, go offhook                    */
  286. extern  BYTE    ck_check_cd(void);         /* Return CARRIER status, Non-Zero = CARRIER            */
  287. extern  void    ck_transmit_data(char *);  /* Xmit to remote only, with CARRIER detect             */
  288. extern  short   ck_transmit_modem(char *); /* Xmit to modem, WITHOUT CARRIER detect                */
  289. extern  size_t  ck_tqueue_len(void);       /* Returns length (in bytes) of serial xmit buffer      */
  290. extern  void    ck_flush_rqueue(void);     /* Flush serial input buffer        */
  291. extern  void    ck_ck_wait(short);         /* Wait delay in seconds            */
  292. extern  short   ck_check_CR(void);         /* Check for Carriage Return, TRUE/FALSE */
  293. extern  short   ck_check_keypress(BYTE);   /* Check for any ASCII code press   */
  294. extern  void    ck_purge_buffer(BYTE *, short); /* Purge buffer to NULLS       */
  295. extern  void    ck_debug_on(void);         /* Disable keyboard timer, carrier  */
  296. extern  void    ck_debug_off(void);        /* Disable keyboard timer, carrier  */
  297. extern  void    ck_carrier_off(void);      /* Same as debug on                 */
  298. extern  void    ck_carrier_on(void);       /* Same as debug off                */
  299. extern  short   ck_dos_shell(char *, char *);  /* Execute external program     */
  300. extern  void    ck_set_r_c(short, short);  /* Position cursor on local console */
  301. extern  short   ck_update_user();          /* Update user record               */
  302. extern  short   ck_check_CTRL_K(void);     /* Check for CTRL-K press           */
  303. extern  void    ck_CtrlK_ON(void);         /* Enable CTRL-K checking (default) */
  304. extern  void    ck_CtrlK_OFF(void);        /* Disable CTRL-K checking          */
  305. extern  void    ck_set_kybd_time(BYTE, BYTE); /* Set keyboard timeouts         */
  306. extern  short   ck_set_ANSI(short);           /* Turn on ANSI compability      */
  307.  
  308. /******************************************************************************
  309.  *   Structure to use with CKIT for BBS's not supported by CKIT               *
  310.  ******************************************************************************/
  311. typedef struct ckitgeneric {
  312.     char port[6];                   /* COM:?  */
  313.     short min_left;                 /* minutes left */
  314. };
  315.  
  316. struct ckitgeneric  ck_gen;         /* You can name this whatever you want */
  317.  
  318. extern  short  ck_NOSYSTEM;         /* Set true if want C-kit open_door()  */
  319.                                     /* to obtain information from ck_gen   */
  320.                                     /* ckitgeneric structure               */
  321.  
  322. /****************************************************************************
  323.  *      IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF IF         *
  324.  ****************************************************************************/
  325. /* Turbo C has a delay() function and does the same thing.                  */
  326. #if COMPILER == MICROSOFT           /* Use Ckit's delay if not using TURBOC */
  327.  
  328. extern  void    ck_delay(short);    /* Gen. Purpose delay X 55 milliseconds */
  329.  
  330. #endif
  331.  
  332. /****************************************************************************
  333.  *     ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF    *
  334.  ****************************************************************************/
  335.  
  336. /******************************************************************************
  337.  ************************ E N D  OF  M O D U L E ******************************/
  338.